home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Examples / MiscStringRegex / test.m < prev   
Text File  |  1995-04-12  |  3KB  |  80 lines

  1. //        Written by Carl Lindberg Copyright (c) 1994 by Carl Lindberg.
  2. //                Version 1.0.  All rights reserved.
  3. //
  4. //        This notice may not be removed from this source code.
  5. //
  6. //    This object is included in the MiscKit by permission from the author
  7. //    and its use is governed by the MiscKit license, found in the file
  8. //    "LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
  9. //    for a list of all applicable permissions and restrictions.
  10. //    
  11.  
  12. #import <misckit/MiscString.h>
  13.  
  14. #define NUMREG 11
  15. #define NUMSTR 2
  16. void main() {
  17.  
  18.  id ts2, tstr = [MiscString newWithString:" 678HelLo My dear 44bonnie.3"];
  19.  int i,j,spot,len,num,k;
  20.  id a = [MiscString new],b= [MiscString new],c= [MiscString new];
  21.  int numreg = NUMREG;
  22.  char *regarr[NUMREG] =  {"[0-9]",
  23.                           "[0-9]*",
  24.                   "([0-9])+",
  25.                   "[^0-9]+",
  26.                   "[a-z]+",
  27.               "[a-zA-Z]+",
  28.               "[{][^}]*[}]",
  29.               NULL,
  30.               "[[0-9]**",
  31.               "[0-9]?[a-zA-Z]+",
  32.               "([^0-9]+)"};
  33.  
  34. char *strarr[NUMSTR] = {" 678HelLo My dear 44bonnie.3",
  35.                         "678HelLo My de(**)ar 44bo{}nnie.3"};
  36.  
  37. for (k=0;k<NUMSTR;k++) {
  38. [tstr setStringValue:strarr[k]];
  39.  
  40. for (i=0;i<numreg;i++) {
  41.   printf("String is : \"%s\"\n",[tstr stringValue]);
  42.   printf("numOf '%s'       : %d\n",regarr[i],num = [tstr numOfRegex:regarr[i] caseSensitive:YES]);
  43.   printf("numOf '%s' nocase: %d\n",regarr[i],[tstr numOfRegex:regarr[i] caseSensitive:NO]);
  44.  
  45.   printf("(-1 is MISC_STRING_LAST)\n");
  46.   for (j=-1;j<=num;j++) {
  47.    spot = [tstr grep:regarr[i] occurrenceNum:j caseSensitive:YES before:a middle:b after:c];
  48.    printf("%d: retval: %d  before: '%s'  middle: '%s'  after: '%s'\n",j,spot,
  49.       [a stringValue],
  50.       [b stringValue],
  51.       [c stringValue]);
  52.    spot = [tstr spotOfRegex:regarr[i] occurrenceNum:j caseSensitive:YES length:&len];
  53.    printf("spot: %d  len: %d\n",spot,len);
  54.    spot = [tstr rspotOfRegex:regarr[i] occurrenceNum:j caseSensitive:YES length:&len];
  55.    printf("rspot: %d  len: %d\n",spot,len);
  56.   } 
  57.  
  58.  ts2 = [tstr copy];
  59.  spot = [ts2 replaceEveryOccurrenceOfRegex:regarr[i] with:"[]" caseSensitive:YES];
  60.  printf("After replace all '%s' with '[]': '%s'\n",regarr[i],[ts2 stringValue]);
  61.  printf("(%d replacement(s))\n",spot);
  62.  [ts2 free];
  63.  
  64.  for (j=-1;j<=num+1;j++) {
  65.    ts2 = [tstr copy];
  66.    [ts2 replaceRegex:regarr[i] with:"[]" occurrenceNum:j caseSensitive:YES];
  67.    printf("replace %dth '%s' with '[]':  '%s'\n",j,regarr[i],[ts2 stringValue]);
  68.    [ts2 free];
  69.   }
  70.  
  71.  printf("Matches '%s'? %d\n",regarr[i],[tstr matchesRegex:regarr[i]]);
  72.  printf("----------------------------------------------------------\n");
  73. }
  74. }
  75.  [tstr free];
  76.  [a free];
  77.  [b free];
  78.  [c free];
  79.  
  80.  }